package com.east.utils;

import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * @ClassName DateUtils
 * @Description 时间操作工具类
 * @author yzp
 * @version 1.0
 * @date 2018年5月15日 上午11:14:45
 */
public class DateUtils {

	private final static Logger logger = LoggerFactory.getLogger(DateUtils.class);

	public static final String[] WEEKNAME = new String[] { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };

	/**
	 * 将String类型转换为date类型
	 * 
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static Date getDate(String date) {
		Date time = null;
		try {
			time = new SimpleDateFormat("yyyy-MM-dd").parse(date);
		} catch (ParseException e) {
			logger.error("时间格式转换错误---yzp");
		}
		return time;
	}

	/**
	 * 将date类型转换为String
	 * 
	 * @param time
	 * @return
	 */
	public static String getymdhms(Date time) {
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time);
	}

	/**
	 * 将date类型转换为String
	 * 
	 * @param staticstime
	 * @return
	 */
	public static String getStringTime(Date staticstime) {
		return new SimpleDateFormat("HH").format(staticstime);
	}

	/**
	 * 将date类型转化为周类型
	 * 
	 * @param staticstime
	 * @return
	 */
	public static String getWeek(Date staticstime) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(staticstime);
		int weekIndex = calendar.get(calendar.DAY_OF_WEEK) - 1;
		return WEEKNAME[weekIndex];
	}

	/**
	 * 将date类型转换为月份
	 * 
	 * @param staticstime
	 * @return
	 */
	public static String getYear(Date staticstime) {
		return new SimpleDateFormat("MM").format(staticstime);
	}

	/**
	 * 将date类型时间转换为日期
	 * 
	 * @param staticstime
	 * @return
	 */
	public static String getMonth(Date staticstime) {
		return new SimpleDateFormat("dd").format(staticstime);
	}

	/**
	 * 将date类型时间转换为日期
	 * 
	 * @param staticstime
	 * @return
	 */
	public static String getYears(Date staticstime) {
		return new SimpleDateFormat("yyyy-MM").format(staticstime);
	}

	/**
	 * 获取某个月的天数
	 * 
	 * @param date
	 * @return
	 */
	public static int getDaysOfMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
	}

	/**
	 * date转String
	 * 
	 * @param date
	 * @return
	 */
	public static String getDaysOfDate(Date date) {
		String format = new SimpleDateFormat("yyyy-MM-dd").format(date);
		return format;
	}
		
	/**
	 * 计算时间
	 * 
	 * @param sharebegindate,参考时间
	 * @param date,当前时间
	 * @param day,时长
	 * @return
	 */
	public static Integer timeCompare(Date sharebegindate, Date date, Integer day) {
		// 计算两时间的差值（单位为小时）
		Integer hours = (int) ((date.getTime() - sharebegindate.getTime()) / 1000 / 60 / 60);
		// 计算剩余时长
		return day * 24 - hours;
	}
	public static String regexp(String startTime,String endTime) {
		String regexp=null;
		
		return regexp;
	}
}
